/**
 * $RCSfile$
 * $Revision: $
 * $Date: $
 *
 * Copyright 2003-2007 Jive Software.
 *
 * All rights reserved. Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.jivesoftware.smack.packet;

import java.util.Vector;

/**
 * IQ packet used by Smack to bind a resource and to obtain the jid assigned by the server.
 * There are two ways to bind a resource. One is simply sending an empty Bind packet where the
 * server will assign a new resource for this connection. The other option is to set a desired
 * resource but the server may return a modified version of the sent resource.<p>
 *
 * For more information refer to the following
 * <a href=http://www.xmpp.org/specs/rfc3920.html#bind>link</a>. 
 *
 * @author Gaston Dombiak
 */
public class CustomOfflineMessageList extends IQ {

	private Vector<CustomMessageListChatInfo> mChatList = null;
	
    private String mFirst = null;
    private String mLast = null;
    private String mCount = null;

    public CustomOfflineMessageList() {
        setType(IQ.Type.SET);
    }
    
    public Vector<CustomMessageListChatInfo> getChatList() {
    	return mChatList;
    }
    
    public void setChatList(Vector<CustomMessageListChatInfo> chatList) {
    	this.mChatList = chatList;
    }

    public String getFirst() {
        return mFirst;
    }

    public void setFirst(String first) {
        this.mFirst = first;
    }

    public String getLast() {
        return mLast;
    }

    public void setLast(String last) {
        this.mLast = last;
    }
    
    public String getCount() {
        return mCount;
    }

    public void setCount(String count) {
        this.mCount = count;
    }

    public String getChildElementXML() {
    	StringBuilder buf = new StringBuilder();
    	buf.append("<list xmlns=\"http://www.xmpp.org/extensions/xep-0136.html#ns\">");
    	if (mChatList != null){
    		for (int i = 0; i<mChatList.size(); i++){
    			buf.append("<chat with=\""+mChatList.get(i).getWith()+"\" start=\""+mChatList.get(i).getStart()+"\"/>");
    		}
    		buf.append("<set xmlns=\"http://jabber.org/protocol/rsm\">");
    		buf.append("<first index=\"0\">"+mFirst+"</first>");
    		buf.append("<last>"+mLast+"</last>");
    		buf.append("<count>"+mCount+"</count>");
    		buf.append("</set>");
    	}
    	buf.append("</list>");
    	return buf.toString();

    }
}
